﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TandvardsstodApp.Rakningar
{
    // Skapad av Ali Agha, 2012-05-05

    public partial class LaggTillRakningar : System.Web.UI.Page
    {

        /// <summary>
        /// Fyller kontroller med värden.
        /// Triggas när sidan laddas.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
            System.Data.DataSet dataSetKlinikNamn = client.GetDataKlinikNamn();
            System.Data.DataTable tableKlinikNamn = dataSetKlinikNamn.Tables[0];
            System.Data.DataSet dataSetBehKod = client.GetDataBehandlareLista();
            System.Data.DataTable tableBehKod = dataSetBehKod.Tables[0];

            try
            {


                for (int i = 0; i < tableKlinikNamn.Rows.Count; i++)
                {

                    DdlKlinik.Items.Add(tableKlinikNamn.Rows[i][2].ToString());


                }

                for (int i = 0; i < tableBehKod.Rows.Count; i++)
                {


                    DdlBehKod.Items.Add(tableBehKod.Rows[i][4].ToString());
                    if (DdlBehKod.Text == DdlBehKod.SelectedItem.ToString())
                    {
                        DdlSparaBehKod.Items.Add(tableBehKod.Rows[i][1].ToString());
                        DdlSparaBehKod.SelectedIndex = DdlBehKod.SelectedIndex;

                    }

                }

            }
            catch
            {
            }
        }

        /// <summary>
        /// Denna metod söker efter tillhörande personnummer och ifall personnummret finns i tabellen (räkningar personer)
        /// så läggs personnummret, förnamnet, efternamnet och FTVmånad till annars får man ett felmeddelande att
        /// personen inte finns.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSokRakning_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();

            if (IsPostBack)
            {
                System.Data.DataSet dataSetValue = client.GetDataByPersonNrTandRäkning(txtSokRakning.Text);
                System.Data.DataTable table = dataSetValue.Tables[0];
                try
                {
                    if (table.Rows[0][1].ToString() == txtSokRakning.Text)
                        lblResultatRakning.Text = "<b>Personen finns i ÖLL</b>";

                    txtPersonNr.Text = table.Rows[0][1].ToString();
                    txtFörNamn.Text = table.Rows[0][2].ToString();
                    txtEfterNamn.Text = table.Rows[0][3].ToString();
                    txtFTVmånad.Text = string.Format("{0:yyyy-MM-dd}", table.Rows[0][27]);



                }
                catch
                {
                    ScriptManager.RegisterStartupScript(btnSokRakning, btnSokRakning.GetType(), "alertscript", "alert(" + '"' + "Personnummret finns inte i ÖLL" + '"' + ")", true);

                }

            }
        }

        /// <summary>
        /// En metod som sparar ned all information i databasen, med en insert SQL sats, och även
        /// rensar alla textboxar ifall try-satsen går igenom. Annars får man ett felmeddelande.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSpara_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();


            try
            {
                client.InsertIntoRäkning(txtPersonNr.Text, txtFörNamn.Text, txtEfterNamn.Text, DdlSparaBehKod.SelectedValue,
                chkNodTandvard.Checked, chkTSLIES.Checked, decimal.Parse(txtBruttoKostnad.Text), decimal.Parse(txtErlagdPatientAvgift.Text),
                decimal.Parse(txtnettoKrav.Text), txtAntalBesök.Text, txtBetaldaBesök.Text, txtFrikortsBesök.Text, txtUteblivande.Text,
                chkFörhandsprövningGjord.Checked, DateTime.Parse(txtInkommandeDatum.Text), DateTime.Parse(txtUtanordnadDatum.Text), DdlKlinik.SelectedValue,
                txtLöpNr.Text, decimal.Parse(txtJusteratKrav.Text), txtKommentar.Text, chkMakulerad.Checked, chkGodkänd.Checked, chkTandvårdsIntyg.Checked,
                chkFHPFinns.Checked, chkPatientlista.Checked, short.Parse(DdlGrupp.SelectedItem.Text), DateTime.Parse(txtFTVmånad.Text), txtVårdTOM.Text,
                txtTypAvVård.Text, chkSärskildÅtgärd.Checked);

                ScriptManager.RegisterStartupScript(btnSpara, btnSpara.GetType(), "alertscript", "alert(" + '"' + "Du har nu lagt till en räkning!" + '"' + ")", true);

                txtSokRakning.Text = "";
                txtPersonNr.Text = "";
                txtFörNamn.Text = "";
                txtEfterNamn.Text = "";
                txtBruttoKostnad.Text = "";
                txtErlagdPatientAvgift.Text = "";
                txtnettoKrav.Text = "";
                txtAntalBesök.Text = "";
                txtBetaldaBesök.Text = "";
                txtFrikortsBesök.Text = "";
                txtUteblivande.Text = "";
                txtInkommandeDatum.Text = "";
                txtUtanordnadDatum.Text = "";
                txtLöpNr.Text = "";
                txtJusteratKrav.Text = "";
                txtFTVmånad.Text = "";
                txtVårdTOM.Text = "";
                txtTypAvVård.Text = "";
                txtKommentar.Text = "";
                txtSokRakning.Focus();

                chkNodTandvard.Checked = false;
                chkTSLIES.Checked = false;
                chkFörhandsprövningGjord.Checked = false;
                chkMakulerad.Checked = false;
                chkGodkänd.Checked = false;
                chkTandvårdsIntyg.Checked = false;
                chkFHPFinns.Checked = false;
                chkPatientlista.Checked = false;
                chkSärskildÅtgärd.Checked = false;
            }
            catch
            {

                ScriptManager.RegisterStartupScript(btnSpara, btnSpara.GetType(), "alertscript", "alert(" + '"' + "Det gick inte att spara räkningen, var snäll försök igen.." + '"' + ")", true);
            }
        }

        /// <summary>
        /// Denna metod tar bort all inmatad information i textboxar och omvandlar checkboxarna till false.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnRensa_Click(object sender, EventArgs e)
        {
            txtSokRakning.Text = "";
            txtPersonNr.Text = "";
            txtFörNamn.Text = "";
            txtEfterNamn.Text = "";
            txtBruttoKostnad.Text = "";
            txtErlagdPatientAvgift.Text = "";
            txtnettoKrav.Text = "";
            txtAntalBesök.Text = "";
            txtBetaldaBesök.Text = "";
            txtFrikortsBesök.Text = "";
            txtUteblivande.Text = "";
            txtInkommandeDatum.Text = "";
            txtUtanordnadDatum.Text = "";
            txtLöpNr.Text = "";
            txtJusteratKrav.Text = "";
            txtFTVmånad.Text = "";
            txtVårdTOM.Text = "";
            txtTypAvVård.Text = "";
            txtKommentar.Text = "";
            txtSokRakning.Focus();

            chkNodTandvard.Checked = false;
            chkTSLIES.Checked = false;
            chkFörhandsprövningGjord.Checked = false;
            chkMakulerad.Checked = false;
            chkGodkänd.Checked = false;
            chkTandvårdsIntyg.Checked = false;
            chkFHPFinns.Checked = false;
            chkPatientlista.Checked = false;
            chkSärskildÅtgärd.Checked = false;
        }

        /// <summary>
        /// Denna metod kollar ifall en person har ett intyg och ifall denna har det så omvandlas 
        /// checkboxen (Tanvårds Intyg) till true och man får ett meddelande om det. Annars så får man ett meddelande
        /// att personen inte har ett intyg och checkboxen omvandlas till false.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnIntyg_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();

            System.Data.DataSet datasetKontrollintyg = client.GetDataRäkningByPersonnummer(txtPersonNr.Text);
            System.Data.DataTable tablekontrollIntyg = datasetKontrollintyg.Tables[0];

            try
            {
                if (tablekontrollIntyg.Rows[0][1].Equals(txtPersonNr.Text))
                {
                    chkTandvårdsIntyg.Checked = true;
                    ScriptManager.RegisterStartupScript(btnIntyg, btnIntyg.GetType(), "alertscript", "alert(" + '"' + "Personen har intyg och är ej avliden eller avförd!" + '"' + ")", true);

                }
                else
                {
                    chkTandvårdsIntyg.Checked = false;
                    ScriptManager.RegisterStartupScript(btnIntyg, btnIntyg.GetType(), "alertscript", "alert(" + '"' + "Personen har EJ intyg, är avliden eller avförd!" + '"' + ")", true);
                }

            }
            catch
            {

            }
        }
    }
}